
#ifndef WINDOW_HPP
#define WINDOW_HPP

#include <stdint.h>
#include <string>

#include "Pattern/Uncopyable.hpp"

#ifdef MY_USE_WIN32

    #include "Core/Win32/WindowImp.hpp"

#elif MY_USE_UNIX

    #include "Core/Unix/WindowImp.hpp"

#else

    #error No implementation defined for My::WindowImp.

#endif

namespace My
{
    class Window : private WindowImp
    {
    public:
        Window(const std::string& title, uint32_t width = 480,  uint32_t height = 320);
        virtual ~Window();

        static void Initialize();
    };

    inline Window::Window(const std::string& title, uint32_t width, uint32_t height)
        : WindowImp(title, width, height)
    {}

    inline Window::~Window()
    {}

    inline void Window::Initialize()
    {
        WindowImp::Initialize();
    }
}

#endif // WINDOW_HPP
